From b77845590a2fe4bb744e46a6de2714017f3937e8 Mon Sep 17 00:00:00 2001 From: "cl349@firebug.cl.cam.ac.uk" Date: Thu, 19 May 2005 20:38:33 +0000 Subject: [PATCH] bitkeeper revision 1.1471 (428cf949ZdshF_D_GTMuih23dXPidw) XendDomain.py: Add XendDomainDict for easy by name lookup. Don't call self.refresh() from XendDomain.list(). Signed-off-by: Christian Limpach --- tools/python/xen/xend/XendDomain.py | 39 ++++++++++++----------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/tools/python/xen/xend/XendDomain.py b/tools/python/xen/xend/XendDomain.py index e06b879bb7..31c0d3e770 100644 --- a/tools/python/xen/xend/XendDomain.py +++ b/tools/python/xen/xend/XendDomain.py @@ -35,8 +35,15 @@ class XendDomain: """Path to domain database.""" dbpath = "domain" - """Table of domain info indexed by domain id.""" - domains = {} + class XendDomainDict(dict): + def get_by_name(self, name): + try: + return filter(lambda d: d.name == name, self.values())[0] + except IndexError, err: + return None + + """Dict of domain info indexed by domain id.""" + domains = XendDomainDict() def __init__(self): # Hack alert. Python does not support mutual imports, but XendDomainInfo @@ -53,16 +60,13 @@ class XendDomain: eserver.subscribe('xend.virq', self.onVirq) self.initial_refresh() - def domain_lookup_by_name(self, name): - try: - return filter(lambda d: d.name == name, - self.domains.values())[0] - except IndexError, err: - return None - - def domain_lookup_by_id(self, id): - return self.domains.get(id) + def list(self): + """Get list of domain objects. + @return: domain objects + """ + return self.domains.values() + def onVirq(self, event, val): """Event handler for virq. """ @@ -153,8 +157,6 @@ class XendDomain: if i in self.domain_db: del self.domain_db[i] self.db.delete(i) - # But also need to make sure are indexed under correct name. - # What about entries under info.name ? if info.id in self.domains: notify = False self.domains[info.id] = info @@ -285,14 +287,6 @@ class XendDomain: self.refresh() return self.domains.keys() - def list(self): - """Get list of domain objects. - - @return: domain objects - """ - self.refresh() - return self.domains.values() - def domain_create(self, config): """Create a domain from a configuration. @@ -362,8 +356,7 @@ class XendDomain: def domain_lookup(self, name): name = str(name) - dominfo = (self.domain_lookup_by_name(name) or - self.domain_lookup_by_id(name)) + dominfo = self.domains.get_by_name(name) or self.domains.get(name) if dominfo: return dominfo try: -- 2.30.2